Entity কী?
Entity হলো একটি জাভা ক্লাস যা ডেটাবেস টেবিলের সাথে ম্যাপিং করে। Entity ব্যবহার করে ডেটাবেস টেবিলের প্রতিটি রেকর্ডকে জাভা অবজেক্ট হিসেবে উপস্থাপন করা হয়। স্প্রিং বুট ORM-এ @Entity অ্যানোটেশন ব্যবহার করে একটি ক্লাসকে Entity হিসেবে চিহ্নিত করা হয়।
Entity-এর বৈশিষ্ট্য:
- একটি Entity সরাসরি একটি ডেটাবেস টেবিলের প্রতিনিধিত্ব করে।
- প্রতিটি টেবিলের কলাম Entity-এর ফিল্ড বা অ্যাট্রিবিউট হিসেবে কাজ করে।
@Idঅ্যানোটেশন ব্যবহার করে Entity-তে প্রাইমারি কী (Primary Key) নির্ধারণ করা হয়।
Entity এবং Table Mapping কিভাবে কাজ করে?
১. Entity ক্লাস তৈরি
Entity ক্লাস তৈরির জন্য নিচের ধাপগুলো অনুসরণ করতে হবে:
@Entity: ক্লাসটিকে ডেটাবেস টেবিলের সাথে ম্যাপ করার জন্য ব্যবহার করা হয়।@Table: টেবিলের নাম কাস্টমাইজ করতে ব্যবহার করা হয়। এটি ঐচ্ছিক।@Id: প্রাইমারি কী হিসেবে কোনো ফিল্ড চিহ্নিত করার জন্য ব্যবহৃত হয়।@GeneratedValue: প্রাইমারি কী-এর মান স্বয়ংক্রিয়ভাবে জেনারেট করতে ব্যবহার করা হয়।@Column: ডেটাবেস কলামের সাথে ক্লাসের ফিল্ড ম্যাপ করতে ব্যবহার করা হয়।
উদাহরণ:
import jakarta.persistence.Entity;
import jakarta.persistence.Table;
import jakarta.persistence.Id;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Column;
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name", nullable = false)
private String name;
@Column(name = "email", unique = true)
private String email;
// Getters and Setters
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
২. Entity এবং Table Mapping প্রক্রিয়া
Mapping এর জন্য প্রয়োজনীয় Annotation গুলো:
@Entity: এটি ক্লাসটিকে একটি ডেটাবেস টেবিলের সাথে সংযুক্ত করে।@Table: টেবিলের নাম স্পষ্টভাবে উল্লেখ করার জন্য ব্যবহৃত হয়। যদি@Tableব্যবহার না করা হয়, তবে ডিফল্টভাবে Entity-এর নাম টেবিলের নাম হিসেবে ব্যবহৃত হয়।@Column: ডেটাবেস টেবিলের কলামের সাথে Entity-এর ফিল্ড ম্যাপ করে। আপনি ফিল্ডের জন্য কাস্টম নাম, ডেটা টাইপ, বা কনস্ট্রেইন্ট উল্লেখ করতে পারেন।
Mapping এর কাজ:
@Entityএবং@Tableনিশ্চিত করে যে, স্প্রিং বুট ডেটাবেসে একটি নির্দিষ্ট টেবিলের সাথে কাজ করছে।@Idনিশ্চিত করে যে, ডেটাবেসে এই ফিল্ডটি প্রাইমারি কী হিসেবে ব্যবহৃত হবে।@GeneratedValueপ্রাইমারি কী-এর জন্য স্বয়ংক্রিয়ভাবে একটি ইউনিক মান প্রদান করে।@Columnডেটাবেস কলামের নাম, সাইজ, এবং অন্যান্য গুণাবলী নির্ধারণ করে।
৩. Hibernate এবং JPA-এর মাধ্যমে Table তৈরি
উপরের Entity ক্লাসটি ব্যবহার করে Hibernate বা JPA স্বয়ংক্রিয়ভাবে টেবিল তৈরি করতে পারে। এর জন্য application.properties বা application.yml ফাইলে নিচের কনফিগারেশন যোগ করুন:
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
এটি নিশ্চিত করে যে, Entity-এর উপর ভিত্তি করে Hibernate স্বয়ংক্রিয়ভাবে টেবিল তৈরি করবে।
Entity-এর মাধ্যমে CRUD অপারেশন
Spring Data JPA ব্যবহার করে Entity-এর উপর CRUD (Create, Read, Update, Delete) অপারেশন পরিচালনা করা যায়। এর জন্য একটি JpaRepository ইন্টারফেস তৈরি করতে হয়।
উদাহরণ:
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {
}
এটি স্বয়ংক্রিয়ভাবে ডেটাবেস অপারেশনের জন্য প্রয়োজনীয় মেথড সরবরাহ করে।
সারাংশ
Entity হলো ডেটাবেস টেবিলের প্রতিনিধিত্বকারী একটি জাভা ক্লাস যা @Entity, @Table, এবং অন্যান্য অ্যানোটেশন ব্যবহার করে ডেটাবেসের সাথে ম্যাপিং করে। Hibernate বা JPA-এর মাধ্যমে Entity ব্যবহার করে ডেটাবেস টেবিল তৈরি, আপডেট এবং ডেটা পরিচালনা সহজে করা যায়। Entity এবং Table Mapping স্প্রিং বুট ORM-এর একটি গুরুত্বপূর্ণ ফিচার, যা ডেটাবেস পরিচালনাকে আরও কার্যকর এবং দ্রুত করে।
Read more